home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 June / EnigmA AMIGA RUN 19 (1997)(G.R. Edizioni)(IT)[!][issue 1997-06][EAR-CD III].iso / recent1 / apic1805.lha / APIC / examples / IBMKEY25.lst < prev    next >
File List  |  1997-05-10  |  79KB  |  1,527 lines

  1. #PIC V0.9.2 (c)1997 J.Petroglou    LIST FILE
  2. #file: data:aminetupp/PICSim/examples/IBMKEY25.ASM
  3. #date: Sat May 10 15:12:24 1997
  4. #pic : PIC16C84
  5.  
  6. ADDR CODE     SRCLINE SOURCECODE
  7.  
  8. 0000             000001 ;KEY.ASM
  9. 0000             000002 ;   IBM keyboard to Amiga Converter
  10. 0000             000003 ;
  11. 0000             000004 ;
  12. 0000             000005 ;        list p=16c84, f=inhx8m  ;Enter device name 
  13. 0000             000006 ;        include "p16c84.inc"
  14. 0000             000007 
  15. 0000             000008 
  16. 0000             000009 
  17. 0000             000010 
  18. 0000             000011 
  19. 0000             000012 
  20. 0000             000013 ;*******************following lines added**************************************
  21. 0000             000014 ;
  22. 0000             000015 ;The original source is Copyright © 1997 Stephen Marsden, taken from
  23. 0000             000016 ;EPic12.lha, this changes are made to assemble MPASM source on Amiga
  24. 0000             000017 ;with PICAsm.
  25. 0000             000018 ;    
  26. 0000             000019 ;
  27. 0000             000020 ;Dirk Düsterberg
  28. 0000             000021 ;
  29. 0000             000022 ;            [InterNet] duesterb@unixserv.rz.fh-hannover.de
  30. 0000             000023 ;            [Homepage] http://linux.rz.fh-hannover.de/~duesterb/
  31. 0000             000024 ;
  32. 0000             000025 
  33. 0000             000026 
  34. 0000             000027 
  35. 0000             000028         list p=16c84         ;Enter device name 
  36.  
  37. #include 'includes:p16cxx.inc' start
  38. 0000             000001     LIST
  39. 0000             000002 ; P16CXX.INC  Standard PICAsm Header File
  40. 0000             000070     LIST
  41. #include end.
  42.  
  43. 0000             000030 
  44. 0000             000031 ;16c84 spezial register (EECON1) assigns:
  45. 0000             000032 
  46. 0000             000033     CBLOCK    0
  47. 0000             000034            RD
  48. 0000             000035        WR
  49. 0000             000036        WREN
  50. 0000             000037        WRERR
  51. 0000             000038        EEIF
  52. 0000             000039     ENDC
  53. 0000             000040 
  54. 0000             000041 ;******************************************************************************
  55. 0000             000042 
  56. 0000             000043 
  57. 0000             000044 
  58. 0000             000045 
  59. 0000             000046 
  60. 0000             000047 #DEFINE PAGE0   bcf     STATUS,RP0          
  61. 0000             000048 #DEFINE PAGE1   bsf     STATUS,RP0          
  62. 0000             000049 
  63. 0000             000050 ;
  64. 0000             000051 ;------------------------------------------------------
  65. 0000             000052 ;Please define ScratchPadRam here:
  66. 0000             000053 ;If you are using PIC16C5X define "ScratchPadRam equ 0x10" 
  67. 0000             000054 ;else define "ScratchPadRam equ 0x20"
  68. 0000             000055 ;-------------------------------------------------------
  69. 0000             000056 ;
  70. 0000             000057 ScrollLock  equ     0x0
  71. 0000             000058 NumLock     equ     0x1
  72. 0000             000059 CapsLock    equ     0x2
  73. 0000             000060 Kclk        equ     0x1
  74. 0000             000061 Kdat        equ     0x0
  75. 0000             000062 Aclk        equ     0x4
  76. 0000             000063 Adat        equ     0x3
  77. 0000             000064 Arst        equ     0x2
  78. 0000             000065 Ctrlbit     equ     0x0
  79. 0000             000066 RAmigabit   equ     0x1
  80. 0000             000067 LAmigabit   equ     0x2
  81. 0000             000068 Keytype     equ     0x0
  82. 0000             000069 Resetype    equ     0x1
  83. 0000             000070 ;
  84. 0000             000071 ;
  85. 0000             000072 ScratchPadRam   equ     0x0C
  86. 0000             000073 ;
  87. 0000             000074 Capbit      equ     ScratchPadRam+0x0
  88. 0000             000075 Capdown     equ     ScratchPadRam+0x1
  89. 0000             000076 CtrlDown    equ     ScratchPadRam+0x2
  90. 0000             000077 RESET       equ     ScratchPadRam+0x3
  91. 0000             000078 Lights      equ     ScratchPadRam+0x4
  92. 0000             000079 Count3      equ     ScratchPadRam+0x5
  93. 0000             000080 ATparity    equ     ScratchPadRam+0x6
  94. 0000             000081 Make        equ     ScratchPadRam+0x7
  95. 0000             000082 Charbad     equ     ScratchPadRam+0x8
  96. 0000             000083 Oldchar     equ     ScratchPadRam+0x9
  97. 0000             000084 Amigachar   equ     ScratchPadRam+0xA
  98. 0000             000085 Count1      equ     ScratchPadRam+0xB
  99. 0000             000086 Count2      equ     ScratchPadRam+0xC
  100. 0000             000087 ATchar      equ     ScratchPadRam+0xD
  101. 0000             000088 tableoffset equ     ScratchPadRam+0xE
  102. 0000             000089 AltConfig   equ     ScratchPadRam+0xF
  103. 0000             000090 Savechar    equ     ScratchPadRam+0x10
  104. 0000             000091 returnvalue equ     ScratchPadRam+0x11
  105. 0000             000092 eeaddress   equ     ScratchPadRam+0x12
  106. 0000             000093 eedata      equ     ScratchPadRam+0x13
  107. 0000             000094 win95       equ     ScratchPadRam+0x14
  108. 0000             000095 Savechar2   equ     ScratchPadRam+0x15
  109. 0000             000096 ;
  110. 0000             000097 ;        
  111. 0000             000098         org     0x0
  112. 0000 2A64        000099         goto    start
  113. 0001             000100 
  114. 0001             000101 ATtb1 
  115. 0001 0082        000102         movwf       PCL                  
  116. 0002 344F        000103         retlw       0x4F            ;F9
  117. 0003 3400        000104         retlw       0x0               
  118. 0004 3457        000105         retlw       0x57            ;F5
  119. 0005 345B        000106         retlw       0x5B            ;F3
  120. 0006 345F        000107         retlw       0x5F            ;F1
  121. 0007 345D        000108         retlw       0x5D            ;F2
  122. 0008 3441        000109         retlw       0x41            ;F12=help
  123. 0009 3400        000110         retlw       0x0
  124. 000A 344D        000111         retlw       0x4D            ;F10
  125. 000B 3451        000112         retlw       0x51            ;F8
  126. 000C 3455        000113         retlw       0x55            ;F6
  127. 000D 3459        000114         retlw       0x59            ;F4
  128. 000E 347B        000115         retlw       0x7B            ;TAB
  129. 000F 34FF        000116         retlw       0xFF            ;~
  130. 0010 3400        000117         retlw       0x0
  131. 0011             000118 
  132. 0011 3400        000119         retlw       0x0
  133. 0012 3437        000120         retlw       0x37            ;Left ALT
  134. 0013 343F        000121         retlw       0x3F            ;Left SHIFT
  135. 0014 3400        000122         retlw       0x0
  136. 0015 2900        000123         goto    lctrl               ;Left Ctrl
  137. 0016 34DF        000124         retlw       0xDF            ;Q
  138. 0017 34FD        000125         retlw       0xFD            ;1
  139. 0018 3400        000126         retlw       0x0
  140. 0019 3400        000127         retlw       0x0
  141. 001A 3400        000128         retlw       0x0
  142. 001B 349D        000129         retlw       0x9D            ;Z
  143. 001C 34BD        000130         retlw       0xBD            ;S
  144. 001D 34BF        000131         retlw       0xBF            ;A
  145. 001E 34DD        000132         retlw       0xDD            ;W
  146. 001F 34FB        000133         retlw       0xFB            ;2
  147. 0020 3400        000134         retlw       0x0
  148. 0021             000135 
  149. 0021 3400        000136         retlw       0x0
  150. 0022 3499        000137         retlw       0x99            ;C
  151. 0023 349B        000138         retlw       0x9B            ;X
  152. 0024 34BB        000139         retlw       0xBB            ;D
  153. 0025 34DB        000140         retlw       0xDB            ;E
  154. 0026 34F7        000141         retlw       0xF7            ;4
  155. 0027 34F9        000142         retlw       0xF9            ;3
  156. 0028 3400        000143         retlw       0x0
  157. 0029 3400        000144         retlw       0x0
  158. 002A 347F        000145         retlw       0x7F            ;SPACE
  159. 002B 3497        000146         retlw       0x97            ;V
  160. 002C 34B9        000147         retlw       0xB9            ;F
  161. 002D 34D7        000148         retlw       0xD7            ;T
  162. 002E 34D9        000149         retlw       0xD9            ;R
  163. 002F 34F5        000150         retlw       0xF5            ;5
  164. 0030 3400        000151         retlw       0x0
  165. 0031             000152 
  166. 0031 3400        000153         retlw       0x0
  167. 0032 3493        000154         retlw       0x93            ;N
  168. 0033 3495        000155         retlw       0x95            ;B
  169. 0034 34B5        000156         retlw       0xB5            ;H
  170. 0035 34B7        000157         retlw       0xB7            ;G
  171. 0036 34D5        000158         retlw       0xD5            ;Y
  172. 0037 34F3        000159         retlw       0xF3            ;6
  173. 0038 3400        000160         retlw       0x0
  174. 0039 3400        000161         retlw       0x0
  175. 003A 3400        000162         retlw       0x0
  176. 003B 3491        000163         retlw       0x91            ;M
  177. 003C 34B3        000164         retlw       0xB3            ;J
  178. 003D 34D3        000165         retlw       0xD3            ;U
  179. 003E 34F1        000166         retlw       0xF1            ;7
  180. 003F 34EF        000167         retlw       0xEF            ;8
  181. 0040 3400        000168         retlw       0x0
  182. 0041             000169 
  183. 0041 3400        000170         retlw       0x0
  184. 0042 348F        000171         retlw       0x8F            ;<
  185. 0043 34B1        000172         retlw       0xB1            ;K
  186. 0044 34D1        000173         retlw       0xD1            ;I
  187. 0045 34CF        000174         retlw       0xCF            ;O
  188. 0046 34EB        000175         retlw       0xEB            ;0
  189. 0047 34ED        000176         retlw       0xED            ;9
  190. 0048 3400        000177         retlw       0x0
  191. 0049 3400        000178         retlw       0x0
  192. 004A 348D        000179         retlw       0x8D            ;>
  193. 004B 348B        000180         retlw       0x8B            ;/
  194. 004C 34AF        000181         retlw       0xAF            ;L
  195. 004D 34AD        000182         retlw       0xAD            ; ';'
  196. 004E 34CD        000183         retlw       0xCD            ;P
  197. 004F 34E9        000184         retlw       0xE9            ;-
  198. 0050 3400        000185         retlw       0x0
  199. 0051             000186 
  200. 0051 3400        000187         retlw       0x0
  201. 0052 3400        000188         retlw       0x0
  202. 0053 34AB        000189         retlw       0xAB            ;@
  203. 0054 3400        000190         retlw       0x0
  204. 0055 34CB        000191         retlw       0xCB            ;[
  205. 0056 34E7        000192         retlw       0xE7            ;=
  206. 0057 3400        000193         retlw       0x0
  207. 0058 3400        000194         retlw       0x0
  208. 0059 343B        000195         retlw       0x3B            ;CAPS LOCK?
  209. 005A 343D        000196         retlw       0x3D            ;Right SHIFT
  210. 005B 3477        000197         retlw       0x77            ;RETURN
  211. 005C 34C9        000198         retlw       0xC9            ;]
  212. 005D 3400        000199         retlw       0x0
  213. 005E 34A9        000200         retlw       0xA9            ;#=right foreign key
  214. 005F 3400        000201         retlw       0x0
  215. 0060 3400        000202         retlw       0x0
  216. 0061             000203 
  217. 0061 3400        000204         retlw       0x0
  218. 0062 349F        000205         retlw       0x9F            ;\ (next to left shift on AT keyboard)
  219. 0063 3400        000206         retlw       0x0
  220. 0064 3400        000207         retlw       0x0
  221. 0065 3400        000208         retlw       0x0
  222. 0066 3400        000209         retlw       0x0
  223. 0067 347D        000210         retlw       0x7D            ;Back SPACE
  224. 0068 3400        000211         retlw       0x0
  225. 0069 3400        000212         retlw       0x0
  226. 006A 34C5        000213         retlw       0xC5            ;1 keypad
  227. 006B 3400        000214         retlw       0x0
  228. 006C 34A5        000215         retlw       0xA5            ;4 keypad
  229. 006D 3485        000216         retlw       0x85            ;7 keypad
  230. 006E 3400        000217         retlw       0x0
  231. 006F 3400        000218         retlw       0x0
  232. 0070 3400        000219         retlw       0x0
  233. 0071             000220 
  234. 0071 34E1        000221         retlw       0xE1            ;0 keypad
  235. 0072 3487        000222         retlw       0x87            ;dot keypad
  236. 0073 34C3        000223         retlw       0xC3            ;2 keypad
  237. 0074 34A3        000224         retlw       0xA3            ;5 keypad
  238. 0075 34A1        000225         retlw       0xA1            ;6 keypad
  239. 0076 3483        000226         retlw       0x83            ;8 keypad
  240. 0077 3475        000227         retlw       0x75            ;ESCAPE!
  241. 0078 344B        000228         retlw       0x4B            ;Number Lock=( keypad   
  242. 0079 34E5        000229         retlw       0xE5            ;F11=\
  243. 007A 3443        000230         retlw       0x43            ;+ keypad
  244. 007B 34C1        000231         retlw       0xC1            ;3 keypad
  245. 007C 346B        000232         retlw       0x6B            ;- keypad
  246. 007D 3445        000233         retlw       0x45            ;* keypad
  247. 007E 3481        000234         retlw       0x81            ;9 keypad
  248. 007F 3449        000235         retlw       0x49            ;scroll Lock=) keypad 
  249. 0080 3400        000236         retlw       0x0
  250. 0081             000237 
  251. 0081             000238 ATtb2:
  252. 0081 3400        000239         retlw       0x0
  253. 0082 3400        000240         retlw       0x0
  254. 0083 3400        000241         retlw       0x0
  255. 0084 3453        000242         retlw       0x53            ;F7
  256. 0085 290D        000243         goto    prtscreen           ;print screen=R Amiga P  
  257. 0086 3400        000244         retlw       0x0
  258. 0087 3400        000245         retlw       0x0
  259. 0088 3400        000246         retlw       0x0
  260. 0089 3400        000247         retlw       0x0
  261. 008A 3400        000248         retlw       0x0
  262. 008B 3400        000249         retlw       0x0
  263. 008C 3400        000250         retlw       0x0
  264. 008D 3400        000251         retlw       0x0
  265. 008E 3400        000252         retlw       0x0
  266. 008F 3400        000253         retlw       0x0
  267. 0090 3400        000254         retlw       0x0
  268. 0091             000255 
  269. 0091 3400        000256         retlw       0x0
  270. 0092 3435        000257         retlw       0x35            ;Right ALT
  271. 0093 3400        000258         retlw       0x0
  272. 0094 3400        000259         retlw       0x0
  273. 0095 2903        000260         goto    rctrl               ;Right CTL
  274. 0096 3400        000261         retlw       0x0
  275. 0097 3400        000262         retlw       0x0
  276. 0098 3400        000263         retlw       0x0
  277. 0099 3400        000264         retlw       0x0
  278. 009A 3400        000265         retlw       0x0
  279. 009B 3400        000266         retlw       0x0
  280. 009C 3400        000267         retlw       0x0
  281. 009D 3400        000268         retlw       0x0
  282. 009E 3400        000269         retlw       0x0
  283. 009F 3400        000270         retlw       0x0
  284. 00A0 3433        000271         retlw       0x33            ;Left Win=Left Amiga
  285. 00A1             000272 
  286. 00A1 3400        000273         retlw       0x0
  287. 00A2 3400        000274         retlw       0x0
  288. 00A3 3400        000275         retlw       0x0
  289. 00A4 3400        000276         retlw       0x0
  290. 00A5 3400        000277         retlw       0x0
  291. 00A6 3400        000278         retlw       0x0
  292. 00A7 3400        000279         retlw       0x0
  293. 00A8 3431        000280         retlw       0x31            ;Right Win=Right Amiga
  294. 00A9 3400        000281         retlw       0x0
  295. 00AA 3400        000282         retlw       0x0
  296. 00AB 3400        000283         retlw       0x0
  297. 00AC 3400        000284         retlw       0x0
  298. 00AD 3400        000285         retlw       0x0
  299. 00AE 3400        000286         retlw       0x0
  300. 00AF 3400        000287         retlw       0x0
  301. 00B0 2906        000288         goto    swapscreen          ;Menu Key=L-Amiga M
  302. 00B1             000289         
  303. 00B1 3400        000290         retlw       0x0
  304. 00B2 3400        000291         retlw       0x0
  305. 00B3 3400        000292         retlw       0x0
  306. 00B4 3400        000293         retlw       0x0
  307. 00B5 3400        000294         retlw       0x0
  308. 00B6 3400        000295         retlw       0x0
  309. 00B7 3400        000296         retlw       0x0
  310. 00B8 3400        000297         retlw       0x0
  311. 00B9 3400        000298         retlw       0x0
  312. 00BA 3400        000299         retlw       0x0
  313. 00BB 3400        000300         retlw       0x0
  314. 00BC 3400        000301         retlw       0x0
  315. 00BD 3400        000302         retlw       0x0
  316. 00BE 3400        000303         retlw       0x0
  317. 00BF 3400        000304         retlw       0x0
  318. 00C0 3400        000305         retlw       0x0
  319. 00C1             000306 
  320. 00C1 3400        000307         retlw       0x0
  321. 00C2 3400        000308         retlw       0x0
  322. 00C3 3400        000309         retlw       0x0
  323. 00C4 3400        000310         retlw       0x0
  324. 00C5 3400        000311         retlw       0x0
  325. 00C6 3400        000312         retlw       0x0
  326. 00C7 3400        000313         retlw       0x0
  327. 00C8 3400        000314         retlw       0x0
  328. 00C9 3400        000315         retlw       0x0
  329. 00CA 3400        000316         retlw       0x0
  330. 00CB 348B        000317         retlw       0x8B            ;/key, supposedly
  331. 00CC 3400        000318         retlw       0x0
  332. 00CD 3400        000319         retlw       0x0
  333. 00CE 3400        000320         retlw       0x0
  334. 00CF 3400        000321         retlw       0x0
  335. 00D0 3400        000322         retlw       0x0
  336. 00D1             000323 
  337. 00D1 3400        000324         retlw       0x0
  338. 00D2 3400        000325         retlw       0x0
  339. 00D3 3400        000326         retlw       0x0
  340. 00D4 3400        000327         retlw       0x0
  341. 00D5 3400        000328         retlw       0x0
  342. 00D6 3400        000329         retlw       0x0
  343. 00D7 3400        000330         retlw       0x0
  344. 00D8 3400        000331         retlw       0x0
  345. 00D9 3400        000332         retlw       0x0
  346. 00DA 3400        000333         retlw       0x0
  347. 00DB 3479        000334         retlw       0x79            ;Numeric Enter
  348. 00DC 3400        000335         retlw       0x0
  349. 00DD 3400        000336         retlw       0x0
  350. 00DE 3400        000337         retlw       0x0
  351. 00DF 3400        000338         retlw       0x0
  352. 00E0 3400        000339         retlw       0x0
  353. 00E1             000340 
  354. 00E1 3400        000341         retlw       0x0
  355. 00E2 3400        000342         retlw       0x0
  356. 00E3 3400        000343         retlw       0x0
  357. 00E4 3400        000344         retlw       0x0
  358. 00E5 3400        000345         retlw       0x0
  359. 00E6 3400        000346         retlw       0x0
  360. 00E7 3400        000347         retlw       0x0
  361. 00E8 3400        000348         retlw       0x0
  362. 00E9 3400        000349         retlw       0x0
  363. 00EA 2914        000350         goto    endkey              ;End=Shift right-cursor  
  364. 00EB 3400        000351         retlw       0x0
  365. 00EC 3461        000352         retlw       0x61            ;Cursor Left
  366. 00ED 291B        000353         goto    home                ;Home=Shift left-cursor  
  367. 00EE 3400        000354         retlw       0x0
  368. 00EF 3400        000355         retlw       0x0
  369. 00F0 3463        000356         retlw       0x63            ;MACRO key=control
  370. 00F1             000357 
  371. 00F1 2930        000358         goto    insert              ;Insert=Right Amiga 7
  372. 00F2 3473        000359         retlw       0x73            ;Delete
  373. 00F3 3465        000360         retlw       0x65            ;Cursor Down
  374. 00F4 3400        000361         retlw       0x0
  375. 00F5 3463        000362         retlw       0x63            ;Cursor Right
  376. 00F6 3467        000363         retlw       0x67            ;Cursor Up
  377. 00F7 3400        000364         retlw       0x0
  378. 00F8 3400        000365         retlw       0x0
  379. 00F9 3400        000366         retlw       0x0
  380. 00FA 3400        000367         retlw       0x0
  381. 00FB 2922        000368         goto    pagedown            ;Page Down=Shift down-cursor
  382. 00FC 3400        000369         retlw       0x0
  383. 00FD 290D        000370         goto    prtscreen           ;print screen=Right Amiga P
  384. 00FE 2929        000371         goto    pageup              ;Page up=Shift up-cursor
  385. 00FF 2937        000372         goto    break               ;Break=Ctrl-C
  386. 0100             000373 ;        retlw       0x0
  387. 0100             000374 
  388. 0100             000375 
  389. 0100             000376 
  390. 0100             000377 ; *** Left Control key ***
  391. 0100             000378 lctrl
  392. 0100 1820        000379         btfsc   win95,0x0
  393. 0101 3439        000380         retlw   0x39                ; ctrl
  394. 0102 3433        000381         retlw   0x33                ; left Amiga
  395. 0103             000382 
  396. 0103             000383 ; *** Right Control key ***
  397. 0103             000384 rctrl
  398. 0103 1820        000385         btfsc   win95,0x0
  399. 0104 3439        000386         retlw   0x39                ; ctrl
  400. 0105 3431        000387         retlw   0x31                ; right Amiga
  401. 0106             000388         
  402. 0106             000389 
  403. 0106             000390 ; *** Menu = Left Amiga-M ***
  404. 0106             000391 swapscreen
  405. 0106 3033        000392         movlw   0x33                ; Left Amiga pressed
  406. 0107 21A0        000393         call    actualtransmit
  407. 0108 3091        000394         movlw   0x91                ; M pressed & released
  408. 0109 23B5        000395         call    sendmessage
  409. 010A 3032        000396         movlw   0x32                ; Left Amiga released
  410. 010B 21A0        000397         call    actualtransmit
  411. 010C 3400        000398         retlw   0x0          
  412. 010D             000399 
  413. 010D             000400 
  414. 010D             000401 ; *** Prt Scrn Key = Right Amiga-P ***
  415. 010D             000402 prtscreen
  416. 010D 3031        000403         movlw   0x31                ; Right Amiga pressed
  417. 010E 21A0        000404         call    actualtransmit
  418. 010F 30CD        000405         movlw   0xCD                ; P pressed & released
  419. 0110 23B5        000406         call    sendmessage
  420. 0111 3030        000407         movlw   0x30                ; Right Amiga released
  421. 0112 21A0        000408         call    actualtransmit
  422. 0113 3400        000409         retlw   0x0          
  423. 0114             000410 
  424. 0114             000411 
  425. 0114             000412 
  426. 0114             000413 ; *** End Key = Shift right-cursor ***
  427. 0114             000414 endkey
  428. 0114 303D        000415         movlw   0x3D                ; Right shift pressed
  429. 0115 21A0        000416         call    actualtransmit
  430. 0116 3063        000417         movlw   0x63                ; right-cursor pressed & released
  431. 0117 23B5        000418         call    sendmessage
  432. 0118 303C        000419         movlw   0x3C                ; Right shift released
  433. 0119 21A0        000420         call    actualtransmit
  434. 011A 3400        000421         retlw   0x0          
  435. 011B             000422 
  436. 011B             000423 
  437. 011B             000424 
  438. 011B             000425 ; *** Home Key = Shift left-cursor ***
  439. 011B             000426 home
  440. 011B 303D        000427         movlw   0x3D                ; Right shift pressed
  441. 011C 21A0        000428         call    actualtransmit
  442. 011D 3061        000429         movlw   0x61                ; left-cursor pressed & released
  443. 011E 23B5        000430         call    sendmessage
  444. 011F 303C        000431         movlw   0x3C                ; Right shift released
  445. 0120 21A0        000432         call    actualtransmit
  446. 0121 3400        000433         retlw   0x0          
  447. 0122             000434 
  448. 0122             000435 
  449. 0122             000436 
  450. 0122             000437 ; *** PageDown Key = Shift down-cursor ***
  451. 0122             000438 pagedown
  452. 0122 303D        000439         movlw   0x3D                ; Right shift pressed
  453. 0123 21A0        000440         call    actualtransmit
  454. 0124 3065        000441         movlw   0x65                ; down-cursor pressed & released
  455. 0125 23B5        000442         call    sendmessage
  456. 0126 303C        000443         movlw   0x3C                ; Right shift released
  457. 0127 21A0        000444         call    actualtransmit
  458. 0128 3400        000445         retlw   0x0          
  459. 0129             000446 
  460. 0129             000447 
  461. 0129             000448 
  462. 0129             000449 ; *** Pageup Key = Shift up-cursor ***
  463. 0129             000450 pageup
  464. 0129 303D        000451         movlw   0x3D                ; Right shift pressed
  465. 012A 21A0        000452         call    actualtransmit
  466. 012B 3067        000453         movlw   0x67                ; up-cursor pressed & released
  467. 012C 23B5        000454         call    sendmessage
  468. 012D 303C        000455         movlw   0x3C                ; Right shift released
  469. 012E 21A0        000456         call    actualtransmit
  470. 012F 3400        000457         retlw   0x0          
  471. 0130             000458 
  472. 0130             000459 
  473. 0130             000460 
  474. 0130             000461 ; *** Insert Key = Right Amiga 7 ***
  475. 0130             000462 insert
  476. 0130 3031        000463         movlw   0x31                ; Right Amiga pressed
  477. 0131 21A0        000464         call    actualtransmit
  478. 0132 30F1        000465         movlw   0xF1                ; 7 pressed & released
  479. 0133 23B5        000466         call    sendmessage
  480. 0134 3030        000467         movlw   0x30                ; Right Amiga released
  481. 0135 21A0        000468         call    actualtransmit
  482. 0136 3400        000469         retlw   0x0          
  483. 0137             000470 
  484. 0137             000471 
  485. 0137             000472 
  486. 0137             000473 ; *** Break Key = Ctrl-C ***
  487. 0137             000474 break
  488. 0137 3039        000475         movlw   0x39                ; Ctrl pressed
  489. 0138 21A0        000476         call    actualtransmit
  490. 0139 3099        000477         movlw   0x99                ; C pressed & released
  491. 013A 23B5        000478         call    sendmessage
  492. 013B 3038        000479         movlw   0x38                ; Ctrl released
  493. 013C 21A0        000480         call    actualtransmit
  494. 013D 3400        000481         retlw   0x0          
  495. 013E             000482 
  496. 013E             000483 
  497. 013E             000484 
  498. 013E             000485 ; *** Wait a long time ***
  499. 013E             000486 longdelay
  500. 013E 0097        000487         movwf   Count1
  501. 013F             000488 dly
  502. 013F 2143        000489         call    fixeddelay
  503. 0140 0B97        000490         decfsz  Count1,F
  504. 0141 293F        000491         goto    dly
  505. 0142 0008        000492         return
  506. 0143             000493 ;
  507. 0143             000494 ; *** Wait a short while ***
  508. 0143             000495 fixeddelay
  509. 0143 30FF        000496         movlw   0xFF
  510. 0144             000497 smalldelay
  511. 0144 0098        000498         movwf   Count2
  512. 0145             000499 delay
  513. 0145 0B98        000500         decfsz  Count2,F
  514. 0146 2945        000501         goto    delay
  515. 0147 0008        000502         return
  516. 0148             000503 
  517. 0148             000504 
  518. 0148             000505 
  519. 0148             000506 
  520. 0148             000507 ; *** Send character to Amiga and wait for handshake ***
  521. 0148             000508 amigatransmit
  522. 0148 0096        000509         movwf   Amigachar
  523. 0149 0215        000510         subwf   Oldchar,W
  524. 014A 1903        000511         btfsc   STATUS,Z            ; skip if not equal
  525. 014B 0008        000512         return                      ; ignore it
  526. 014C             000513         
  527. 014C 3033        000514         movlw   0x33                ; LAmiga pressed
  528. 014D 0216        000515         subwf   Amigachar,W
  529. 014E 1903        000516         btfsc   STATUS,Z            ; skip if not equal
  530. 014F 110F        000517         bcf     RESET,LAmigabit
  531. 0150 3032        000518         movlw   0x32                ; LAmiga released
  532. 0151 0216        000519         subwf   Amigachar,W
  533. 0152 1903        000520         btfsc   STATUS,Z            ; skip if not equal
  534. 0153 150F        000521         bsf     RESET,LAmigabit
  535. 0154             000522                 
  536. 0154 3031        000523         movlw   0x31                ; RAmiga pressed
  537. 0155 0216        000524         subwf   Amigachar,W
  538. 0156 1903        000525         btfsc   STATUS,Z            ; skip if not equal
  539. 0157 108F        000526         bcf     RESET,RAmigabit
  540. 0158 3030        000527         movlw   0x30                ; RAmiga released
  541. 0159 0216        000528         subwf   Amigachar,W
  542. 015A 1903        000529         btfsc   STATUS,Z            ; skip if not equal
  543. 015B 148F        000530         bsf     RESET,RAmigabit
  544. 015C             000531                 
  545. 015C 303B        000532         movlw   0x3B                ; jump if not Capslock down
  546. 015D 0216        000533         subwf   Amigachar,W
  547. 015E 1D03        000534         btfss   STATUS,Z            ; skip if equal
  548. 015F 2966        000535         goto    transok2            ; ignore it
  549. 0160 100F        000536         bcf     RESET,Ctrlbit
  550. 0161 0816        000537         movf    Amigachar,W
  551. 0162 0095        000538         movwf   Oldchar
  552. 0163 30FF        000539         movlw   0xFF
  553. 0164 008D        000540         movwf   Capdown             ; set flags for later
  554. 0165 0008        000541         return
  555. 0166             000542 transok2
  556. 0166 303A        000543         movlw   0x3A                ; jump if not Capslock up
  557. 0167 0216        000544         subwf   Amigachar,W
  558. 0168 1D03        000545         btfss   STATUS,Z            ; skip if equal
  559. 0169 2984        000546         goto    transok3            ; ignore it
  560. 016A             000547 
  561. 016A 140F        000548         bsf     RESET,Ctrlbit
  562. 016B 303B        000549         movlw   0x3B                ; see if Capslock was just down
  563. 016C 0215        000550         subwf   Oldchar,W           ; 
  564. 016D 1D03        000551         btfss   STATUS,Z            ; skip if equal
  565. 016E 297D        000552         goto    transok4            ; use as Ctrl key
  566. 016F 018D        000553         clrf    Capdown             ; clear flag
  567. 0170 098C        000554         comf    Capbit,F            ; toggle down/upness of caplock
  568. 0171 303B        000555         movlw   0x3B                ; send Capslock down
  569. 0172 1C0C        000556         btfss   Capbit,0x0
  570. 0173 39FE        000557         andlw   0xFE
  571. 0174 21A0        000558         call    actualtransmit
  572. 0175             000559 ; send lights to AT
  573. 0175 30ED        000560         movlw   0xED                ; Next data is for lights
  574. 0176 21D7        000561         call    SendtoAT
  575. 0177 1510        000562         bsf     Lights,CapsLock     ; Capslock on
  576. 0178 1C0C        000563         btfss   Capbit,0x0
  577. 0179 1110        000564         bcf     Lights,CapsLock     ; Capslock off
  578. 017A 0810        000565         movf    Lights,W
  579. 017B 21D7        000566         call    SendtoAT
  580. 017C 0008        000567         return
  581. 017D             000568 transok4
  582. 017D 1820        000569         btfsc   win95,0x0
  583. 017E 0008        000570         return
  584. 017F 018E        000571         clrf    CtrlDown
  585. 0180 018D        000572         clrf    Capdown             ; Capslock has finished acting as ctrl
  586. 0181 3038        000573         movlw   0x38                ; send Ctrl up
  587. 0182 21A0        000574         call    actualtransmit
  588. 0183 0008        000575         return
  589. 0184             000576 transok3
  590. 0184 0816        000577         movf    Amigachar,W
  591. 0185 00A1        000578         movwf   Savechar2
  592. 0186 0095        000579         movwf   Oldchar
  593. 0187 088D        000580         movf    Capdown,F           ; Capslock down?
  594. 0188 1903        000581         btfsc   STATUS,Z            ; skip if non-zero i.e caps pressed
  595. 0189 2995        000582         goto    nocontrol           ; ignore it
  596. 018A 1820        000583         btfsc   win95,0x0
  597. 018B 2995        000584         goto    nocontrol           ; ignore it
  598. 018C 088E        000585         movf    CtrlDown,F
  599. 018D 1D03        000586         btfss   STATUS,Z            ; skip if zero i.e caps pressed
  600. 018E 2995        000587         goto    nocontrol           ; ignore it
  601. 018F 30FF        000588         movlw   0xFF
  602. 0190 008E        000589         movwf   CtrlDown            ; Caps lock is now Ctrl key
  603. 0191 3039        000590         movlw   0x39                ; send Ctrl down
  604. 0192 21A0        000591         call    actualtransmit
  605. 0193 0821        000592         movf    Savechar2,W
  606. 0194 29A0        000593         goto    actualtransmit
  607. 0195             000594 nocontrol
  608. 0195 0816        000595         movf    Amigachar,W
  609. 0196 39FE        000596         andlw   0xFE
  610. 0197 3C44        000597         sublw   0x44                ; * (Numkey) released
  611. 0198 1D03        000598         btfss   STATUS,Z            ; skip if equal
  612. 0199 019B        000599         clrf    AltConfig
  613. 019A 0A9B        000600         incf    AltConfig,F
  614. 019B             000601 
  615. 019B 3028        000602         movlw   0x28                ; 20 th time?
  616. 019C 021B        000603         subwf   AltConfig,W
  617. 019D 1903        000604         btfsc   STATUS,Z            ; skip if not equal
  618. 019E 22F9        000605         call    config
  619. 019F             000606 
  620. 019F             000607 
  621. 019F 0816        000608         movf    Amigachar,W
  622. 01A0             000609 
  623. 01A0             000610 actualtransmit
  624. 01A0 0096        000611         movwf   Amigachar
  625. 01A1             000612 
  626. 01A1 3005        000613         movlw   .5           ; do a 5x256 delay
  627. 01A2 213E        000614         call    longdelay
  628. 01A3             000615 actual2
  629. 01A3 3008        000616         movlw   .8
  630. 01A4 0097        000617         movwf   Count1
  631. 01A5 0194        000618         clrf    Charbad
  632. 01A6             000619 f
  633. 01A6 1B96        000620         btfsc   Amigachar,0x7       ; IF bit7=1 THEN Adat=1
  634. 01A7 1585        000621         bsf     PORTA,Adat
  635. 01A8 1F96        000622         btfss   Amigachar,0x7       ; IF bit7=0 THEN Adat=0
  636. 01A9 1185        000623         bcf     PORTA,Adat
  637. 01AA 3008        000624         movlw   .8
  638. 01AB 2144        000625         call    smalldelay          ; Allow Adat logic to settle
  639. 01AC 1205        000626         bcf     PORTA,Aclk          ; transmit
  640. 01AD 3008        000627         movlw   .8
  641. 01AE 2144        000628         call    smalldelay          ; Allow Aclk logic to settle
  642. 01AF 1605        000629         bsf     PORTA,Aclk          ; reset Aclk=1
  643. 01B0 300A        000630         movlw   .10
  644. 01B1 2144        000631         call    smalldelay          ; Allow Aclk logic to settle
  645. 01B2 0D96        000632         rlf     Amigachar,F
  646. 01B3 0B97        000633         decfsz  Count1,F            ; Transmit next bit?
  647. 01B4 29A6        000634         goto    f
  648. 01B5             000635 
  649. 01B5 300F        000636         movlw   0xF
  650. 01B6 0097        000637         movwf   Count1
  651. 01B7 30FF        000638         movlw   0xFF
  652. 01B8 0097        000639         movwf   Count1
  653. 01B9 0098        000640         movwf   Count2
  654. 01BA             000641 
  655. 01BA 1683        000642         PAGE1          
  656. 01BB 1585        000643         bsf     TRISA,Adat          ; Read acknowledge signal
  657. 01BC 1283        000644         PAGE0          
  658. 01BD             000645 ack
  659. 01BD 0397        000646         decf    Count1,F
  660. 01BE 1903        000647         btfsc   STATUS,Z
  661. 01BF 0398        000648         decf    Count2,F
  662. 01C0 0818        000649         movf    Count2,W            ; Count2=0?
  663. 01C1 1903        000650         btfsc   STATUS,Z
  664. 01C2 29CC        000651         goto    syncup              ; no handshake
  665. 01C3 1985        000652         btfsc   PORTA,Adat         ; wait for handshake from amiga
  666. 01C4 29BD        000653         goto    ack
  667. 01C5             000654 ready
  668. 01C5 1D85        000655         btfss   PORTA,Adat          ; wait for handshake to finish
  669. 01C6 29C5        000656         goto    ready
  670. 01C7             000657 
  671. 01C7 1585        000658         bsf     PORTA,Adat          ; reset Adat=1
  672. 01C8 1683        000659         PAGE1          
  673. 01C9 1185        000660         bcf     TRISA,Adat          ; Return to output mode
  674. 01CA 1283        000661         PAGE0          
  675. 01CB 0008        000662         return
  676. 01CC             000663 syncup
  677. 01CC 1205        000664         bcf     PORTA,Aclk          ; send another clock pulse
  678. 01CD 3008        000665         movlw   .8
  679. 01CE 2144        000666         call    smalldelay          ; Allow Aclk logic to settle
  680. 01CF 1605        000667         bsf     PORTA,Aclk          ; reset Aclk=1
  681. 01D0 30FF        000668         movlw   0xFF
  682. 01D1 0097        000669         movwf   Count1
  683. 01D2 0098        000670         movwf   Count2
  684. 01D3 0391        000671         decf    Count3,F
  685. 01D4 1903        000672         btfsc   STATUS,Z
  686. 01D5 0008        000673         return
  687. 01D6 29BD        000674         goto    ack                 ; wait for acknowledge again
  688. 01D7             000675 
  689. 01D7             000676 
  690. 01D7             000677 
  691. 01D7             000678 ; *** Send character to AT keyboard and wait for handshake ***
  692. 01D7             000679 SendtoAT
  693. 01D7 0094        000680         movwf   Charbad
  694. 01D8             000681 resend
  695. 01D8 0814        000682         movf    Charbad,W
  696. 01D9 0099        000683         movwf   ATchar
  697. 01DA 0192        000684         clrf    ATparity
  698. 01DB 1486        000685         bsf     PORTB,Kclk          ; Kclk=1 get keyboards attention
  699. 01DC 0000        000686         nop
  700. 01DD 1006        000687         bcf     PORTB,Kdat          ; Kdat=0 get keyboards attention
  701. 01DE 1683        000688         PAGE1          
  702. 01DF 1086        000689         bcf     TRISB,Kclk          ; Kclk is in output mode
  703. 01E0 0000        000690         nop
  704. 01E1 1006        000691         bcf     TRISB,Kdat          ; Kdat is in output mode
  705. 01E2 1283        000692         PAGE0          
  706. 01E3 3008        000693         movlw   .8
  707. 01E4 0097        000694         movwf   Count1
  708. 01E5 1683        000695         PAGE1          
  709. 01E6 1486        000696         bsf     TRISB,Kclk          ; Kclk is in input mode
  710. 01E7 1283        000697         PAGE0          
  711. 01E8 1886        000698 Send4   btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  712. 01E9 29E8        000699         goto    Send4
  713. 01EA 1819        000700         btfsc   ATchar,0x0          ; IF bit0=1 THEN Kdat=1
  714. 01EB 1406        000701         bsf     PORTB,Kdat
  715. 01EC 1C19        000702         btfss   ATchar,0x0          ; IF bit0=0 THEN Kdat=0
  716. 01ED 1006        000703         bcf     PORTB,Kdat
  717. 01EE 0C99        000704         rrf     ATchar,F            ; next bit
  718. 01EF 1803        000705         btfsc   STATUS,C            ; test parity of bit shifted out
  719. 01F0 0A92        000706         incf    ATparity,F
  720. 01F1 1C86        000707 Send5   btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  721. 01F2 29F1        000708         goto    Send5                
  722. 01F3 0B97        000709         decfsz  Count1,F
  723. 01F4 29E8        000710         goto    Send4
  724. 01F5 1886        000711 Send6   btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  725. 01F6 29F5        000712         goto    Send6
  726. 01F7 1812        000713         btfsc   ATparity,0x0        ; IF bit0=odd THEN Kdat=0 (odd parity)
  727. 01F8 1006        000714         bcf     PORTB,Kdat
  728. 01F9 1C12        000715         btfss   ATparity,0x0        ; IF bit0=even THEN Kdat=1 (odd parity)
  729. 01FA 1406        000716         bsf     PORTB,Kdat
  730. 01FB 1C86        000717 Send7   btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  731. 01FC 29FB        000718         goto    Send7
  732. 01FD 1886        000719 Send77  btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  733. 01FE 29FD        000720         goto    Send77
  734. 01FF 1406        000721         bsf     PORTB,Kdat          ; stop bit
  735. 0200 1C86        000722 Send78  btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  736. 0201 2A00        000723         goto    Send78
  737. 0202 1683        000724         PAGE1          
  738. 0203 1406        000725         bsf     TRISB,Kdat          ; reset Kdat back to input mode
  739. 0204 1283        000726         PAGE0          
  740. 0205 1886        000727 Send79  btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  741. 0206 2A05        000728         goto    Send79
  742. 0207 1C86        000729 Send7a  btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  743. 0208 2A07        000730         goto    Send7a
  744. 0209 3008        000731         movlw   .8
  745. 020A 2144        000732         call    smalldelay          ; Allow Kclk logic to settle
  746. 020B 1086        000733         bcf     PORTB,Kclk          ; Kclk=0 Send handshake
  747. 020C 1683        000734         PAGE1          
  748. 020D 1086        000735         bcf     TRISB,Kclk          ; Kclk is in output mode
  749. 020E 1283        000736         PAGE0          
  750. 020F 3014        000737         movlw   .20
  751. 0210 2144        000738         call    smalldelay          ; Allow keyboard chance 
  752. 0211 2217        000739         call    ATgetkey
  753. 0212 30FA        000740         movlw   0xFA                ; Was transmission ok
  754. 0213 0219        000741         subwf   ATchar,W
  755. 0214 1D03        000742         btfss   STATUS,Z            ; skip if good
  756. 0215 29D8        000743         goto    resend
  757. 0216 0008        000744         return
  758. 0217             000745         
  759. 0217             000746 
  760. 0217             000747 
  761. 0217             000748 
  762. 0217             000749 ; *** Waits for keyboard to send code ***
  763. 0217             000750 ATgetkey
  764. 0217 0199        000751         clrf    ATchar
  765. 0218 1486        000752         bsf     PORTB,Kclk          ; Kclk=1 Allow keyboard to talk
  766. 0219 1683        000753         PAGE1
  767. 021A 1486        000754         bsf     TRISB,Kclk          ; Kclk is in input mode
  768. 021B 1283        000755         PAGE0
  769. 021C 1886        000756 skip1st btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  770. 021D 2A1C        000757         goto    skip1st
  771. 021E 1C86        000758 skippy  btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  772. 021F 2A1E        000759         goto    skippy
  773. 0220 3008        000760         movlw   .8
  774. 0221 0097        000761         movwf   Count1
  775. 0222             000762 ATwait0
  776. 0222 1886        000763         btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  777. 0223 2A22        000764         goto    ATwait0
  778. 0224 0C99        000765         rrf     ATchar,F
  779. 0225 1806        000766         btfsc   PORTB,Kdat
  780. 0226 1799        000767         bsf     ATchar,0x7
  781. 0227 1C06        000768         btfss   PORTB,Kdat
  782. 0228 1399        000769         bcf     ATchar,0x7
  783. 0229 1C86        000770 ATwait1 btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  784. 022A 2A29        000771         goto    ATwait1
  785. 022B 0B97        000772         decfsz  Count1,F
  786. 022C 2A22        000773         goto    ATwait0             ; get all 8 bits of data
  787. 022D 1886        000774 parity0 btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  788. 022E 2A2D        000775         goto    parity0
  789. 022F 1C86        000776 parity1 btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  790. 0230 2A2F        000777         goto    parity1
  791. 0231 1886        000778 stop0   btfsc   PORTB,Kclk          ; wait for keyboard to make Kclk=0
  792. 0232 2A31        000779         goto    stop0
  793. 0233 1C86        000780 stop1   btfss   PORTB,Kclk          ; wait for keyboard to make Kclk=1
  794. 0234 2A33        000781         goto    stop1
  795. 0235 1086        000782         bcf     PORTB,Kclk          ; Kclk=0 Send handshake
  796. 0236 1683        000783         PAGE1
  797. 0237 1086        000784         bcf     TRISB,Kclk          ; Kclk is in output mode
  798. 0238 1283        000785         PAGE0
  799. 0239 3014        000786         movlw   .20
  800. 023A 2144        000787         call    smalldelay          ; Allow keyboard chance to recieve
  801. 023B 0008        000788         return
  802. 023C             000789 
  803. 023C             000790 
  804. 023C             000791 
  805. 023C             000792 
  806. 023C             000793 
  807. 023C             000794 ; *** Flash Light ***
  808. 023C             000795 flash
  809. 023C 0090        000796         movwf    Lights
  810. 023D 30ED        000797         movlw   0xED                ; Next data is for lights
  811. 023E 21D7        000798         call    SendtoAT
  812. 023F 0810        000799         movf    Lights,W            ; Flash lights
  813. 0240 21D7        000800         call    SendtoAT
  814. 0241 3025        000801         movlw   0x25
  815. 0242 213E        000802         call    longdelay     
  816. 0243 30ED        000803         movlw   0xED                ; Next data is for lights
  817. 0244 21D7        000804         call    SendtoAT
  818. 0245 3000        000805         movlw   0x0                 ; Clear Lights
  819. 0246 21D7        000806         call    SendtoAT
  820. 0247 3025        000807         movlw   0x25
  821. 0248 213E        000808         call    longdelay     
  822. 0249 0008        000809         return
  823. 024A             000810 
  824. 024A             000811 
  825. 024A             000812 
  826. 024A             000813 ; *** Performs reset on Amiga ***
  827. 024A             000814 reset
  828. 024A 3001        000815         movlw   Resetype
  829. 024B 23D8        000816         call    readdata
  830. 024C 3C01        000817         sublw   0x1                 
  831. 024D 1903        000818         btfsc   STATUS,Z            ; skip if not equal
  832. 024E 2A5B        000819         goto    kill                ; jump if fast reset
  833. 024F 300F        000820         movlw   0x0F                ; Tell amiga we are going to reset it
  834. 0250 21A0        000821         call    actualtransmit
  835. 0251             000822 
  836. 0251 3008        000823         movlw    0x8
  837. 0252 0091        000824         movwf   Count3
  838. 0253 3001        000825 strobe  movlw    0x1
  839. 0254 223C        000826         call    flash
  840. 0255 3002        000827         movlw    0x2
  841. 0256 223C        000828         call     flash
  842. 0257 3004        000829         movlw    0x4
  843. 0258 223C        000830         call     flash
  844. 0259 0B91        000831         decfsz  Count3,F
  845. 025A 2A53        000832         goto    strobe
  846. 025B             000833 kill
  847. 025B 3070        000834         movlw   0x70
  848. 025C 213E        000835         call    longdelay     
  849. 025D 1106        000836         bcf     PORTB,Arst          ; Arst=0 Send reset
  850. 025E 1683        000837         PAGE1
  851. 025F 1106        000838         bcf     TRISB,Arst          ; Arst is in output mode
  852. 0260 1283        000839         PAGE0
  853. 0261 30FF        000840         movlw   0xFF
  854. 0262 213E        000841         call    longdelay           ; Wait for Amiga to reset
  855. 0263 2A6E        000842         goto    start2
  856. 0264             000843 
  857. 0264             000844 
  858. 0264             000845 
  859. 0264             000846 
  860. 0264             000847 start
  861. 0264             000848 
  862. 0264             000849 ; *** Allow time for HardDrive to spin upto speed ***
  863. 0264             000850 SpinUp
  864. 0264 1106        000851         bcf     PORTB,Arst          ; Arst=0 Send reset
  865. 0265 1683        000852         PAGE1
  866. 0266 1106        000853         bcf     TRISB,Arst          ; Arst is in output mode
  867. 0267 1283        000854         PAGE0
  868. 0268 3030        000855         movlw   0x30
  869. 0269 0091        000856         movwf   Count3
  870. 026A             000857 waitHD
  871. 026A 30FF        000858         movlw   0xFF
  872. 026B 213E        000859         call    longdelay           ; Wait for drive to wake up
  873. 026C 0B91        000860         decfsz  Count3,F
  874. 026D 2A6A        000861         goto    waitHD
  875. 026E             000862 
  876. 026E             000863 start2
  877. 026E             000864 ; *** Setup ports ***
  878. 026E 1605        000865         bsf     PORTA,Aclk          ; transmit
  879. 026F 0000        000866         nop
  880. 0270 1585        000867         bsf     PORTA,Adat
  881. 0271 1683        000868         PAGE1          
  882. 0272 3007        000869         movlw   0x7
  883. 0273 0085        000870         movwf   TRISA
  884. 0274 30FF        000871         movlw   0xFF
  885. 0275 0086        000872         movwf   TRISB
  886. 0276 1283        000873         PAGE0          
  887. 0277             000874 
  888. 0277             000875 
  889. 0277             000876 ; *** Clear out miscellaneous flags ***
  890. 0277 018D        000877         clrf    Capdown
  891. 0278 018E        000878         clrf    CtrlDown
  892. 0279 018C        000879         clrf    Capbit
  893. 027A 0195        000880         clrf    Oldchar
  894. 027B 019B        000881         clrf    AltConfig
  895. 027C 3007        000882         movlw   0x7
  896. 027D 008F        000883         movwf   RESET
  897. 027E             000884 
  898. 027E             000885 ; *** See what sort of keyboard is attached ***
  899. 027E 01A0        000886         clrf    win95
  900. 027F 3000        000887         movlw   Keytype
  901. 0280 23D8        000888         call    readdata
  902. 0281 3C02        000889         sublw   0x2                 
  903. 0282 1903        000890         btfsc   STATUS,Z            ; skip if not equal
  904. 0283 09A0        000891         comf    win95               ; win95=true or false
  905. 0284             000892 
  906. 0284             000893 ; *** Wait for AT keyboard to power up ***
  907. 0284             000894 waitAT
  908. 0284 1C06        000895         btfss   PORTB,Kdat         ; wait for AT keyboard
  909. 0285 2A84        000896         goto    waitAT
  910. 0286             000897         
  911. 0286             000898 ; *** Reset AT keyboard ***
  912. 0286             000899 ;        movlw   0xFF            ; Reset
  913. 0286             000900 ;        call    SendtoAT
  914. 0286 30F6        000901         movlw   0xF6            ; Default
  915. 0287 21D7        000902         call    SendtoAT
  916. 0288 3007        000903         movlw    0x7
  917. 0289 223C        000904         call    flash
  918. 028A 30ED        000905         movlw   0xED            ; Next data is for lights
  919. 028B 21D7        000906         call    SendtoAT
  920. 028C 3002        000907         movlw   0x2
  921. 028D 0090        000908         movwf   Lights
  922. 028E 21D7        000909         call    SendtoAT
  923. 028F 30F4        000910         movlw   0xF4            ; Clear buffer
  924. 0290 21D7        000911         call    SendtoAT
  925. 0291             000912 
  926. 0291             000913 
  927. 0291             000914 ATstyle
  928. 0291 088F        000915         movf    RESET,F
  929. 0292 1903        000916         btfsc   STATUS,Z
  930. 0293 2A4A        000917         goto    reset
  931. 0294 2217        000918         call    ATgetkey
  932. 0295 30E1        000919         movlw   0xE1
  933. 0296 0219        000920         subwf   ATchar,W
  934. 0297 1D03        000921         btfss   STATUS,Z            ; skip if equal
  935. 0298 2AA1        000922         goto    ATnE1        
  936. 0299 2217        000923         call    ATgetkey            ; should be $14
  937. 029A 2217        000924         call    ATgetkey            ; should be $77
  938. 029B 2217        000925         call    ATgetkey            ; should be $E1
  939. 029C 2217        000926         call    ATgetkey            ; should be $F0
  940. 029D 2217        000927         call    ATgetkey            ; should be $14
  941. 029E 2217        000928         call    ATgetkey            ; should be $F0
  942. 029F 2217        000929         call    ATgetkey            ; should be $77
  943. 02A0 2A91        000930         goto    ATstyle
  944. 02A1             000931 ATnE1
  945. 02A1 019A        000932         clrf    tableoffset
  946. 02A2 30E0        000933         movlw   0xE0
  947. 02A3 0219        000934         subwf   ATchar,W
  948. 02A4 1D03        000935         btfss   STATUS,Z            ; skip if equal
  949. 02A5 2AC0        000936         goto    ATnE0        
  950. 02A6 3080        000937         movlw   0x80
  951. 02A7 009A        000938         movwf   tableoffset
  952. 02A8 2217        000939         call    ATgetkey
  953. 02A9 30F0        000940         movlw   0xF0
  954. 02AA 0219        000941         subwf   ATchar,W
  955. 02AB 1D03        000942         btfss   STATUS,Z            ; skip if equal
  956. 02AC 2AB7        000943         goto    ATnE0F0        
  957. 02AD 2217        000944         call    ATgetkey
  958. 02AE 3012        000945         movlw   0x12
  959. 02AF 0219        000946         subwf   ATchar,W
  960. 02B0 1903        000947         btfsc   STATUS,Z            ; skip if not equal
  961. 02B1 2A91        000948         goto    ATstyle             ; E0F012 ignore it
  962. 02B2             000949 ATnEF12
  963. 02B2 3059        000950         movlw   0x59
  964. 02B3 0219        000951         subwf   ATchar,W
  965. 02B4 1D03        000952         btfss   STATUS,Z            ; skip if equal
  966. 02B5 2ACD        000953         goto    ATup        
  967. 02B6 2A91        000954         goto    ATstyle             ; E0F059 ignore it
  968. 02B7             000955 ATnE0F0
  969. 02B7 3012        000956         movlw   0x12
  970. 02B8 0219        000957         subwf   ATchar,W
  971. 02B9 1903        000958         btfsc   STATUS,Z            ; skip if not equal
  972. 02BA 2A91        000959         goto    ATstyle             ; E012 ignore it
  973. 02BB             000960 ATnE012
  974. 02BB 3059        000961         movlw   0x59
  975. 02BC 0219        000962         subwf   ATchar,W
  976. 02BD 1D03        000963         btfss   STATUS,Z            ; skip if equal
  977. 02BE 2AC6        000964         goto    ATdown        
  978. 02BF 2A91        000965         goto    ATstyle             ; E059 ignore it
  979. 02C0             000966 ATnE0
  980. 02C0 30F0        000967         movlw   0xF0
  981. 02C1 0219        000968         subwf   ATchar,W
  982. 02C2 1D03        000969         btfss   STATUS,Z            ; skip if equal
  983. 02C3 2AC6        000970         goto    ATdown        
  984. 02C4 2217        000971         call    ATgetkey
  985. 02C5 2ACD        000972         goto    ATup                ; F0= key released
  986. 02C6             000973 ATdown        
  987. 02C6 0A19        000974         incf    ATchar,W
  988. 02C7 071A        000975         addwf   tableoffset,W
  989. 02C8 2001        000976         call    ATtb1
  990. 02C9 3E00        000977         addlw   0x0                 ; test W
  991. 02CA 1D03        000978         btfss   STATUS,Z
  992. 02CB 2148        000979         call    amigatransmit
  993. 02CC 2A91        000980         goto    ATstyle
  994. 02CD             000981 ATup        
  995. 02CD 0A19        000982         incf    ATchar,W
  996. 02CE 071A        000983         addwf   tableoffset,W
  997. 02CF 009A        000984         movwf   tableoffset
  998. 02D0             000985 
  999. 02D0 30B0        000986         movlw   0xAF+1              ; menu key
  1000. 02D1 021A        000987         subwf   tableoffset,W
  1001. 02D2 1903        000988         btfsc   STATUS,Z            ; skip if not equal
  1002. 02D3 2A91        000989         goto    ATstyle             ; ignore it
  1003. 02D4             000990 
  1004. 02D4 3085        000991         movlw   0x84+1              ; PrtScrn
  1005. 02D5 021A        000992         subwf   tableoffset,W
  1006. 02D6 1903        000993         btfsc   STATUS,Z            ; skip if not equal
  1007. 02D7 2A91        000994         goto    ATstyle             ; ignore it
  1008. 02D8             000995 
  1009. 02D8 30EA        000996         movlw   0xE9+1              ; End
  1010. 02D9 021A        000997         subwf   tableoffset,W
  1011. 02DA 1903        000998         btfsc   STATUS,Z            ; skip if not equal
  1012. 02DB 2A91        000999         goto    ATstyle             ; ignore it
  1013. 02DC             001000 
  1014. 02DC 30ED        001001         movlw   0xEC+1              ; Home
  1015. 02DD 021A        001002         subwf   tableoffset,W
  1016. 02DE 1903        001003         btfsc   STATUS,Z            ; skip if not equal
  1017. 02DF 2A91        001004         goto    ATstyle             ; ignore it
  1018. 02E0             001005 
  1019. 02E0 30F1        001006         movlw   0xF0+1              ; Insert
  1020. 02E1 021A        001007         subwf   tableoffset,W
  1021. 02E2 1903        001008         btfsc   STATUS,Z            ; skip if not equal
  1022. 02E3 2A91        001009         goto    ATstyle             ; ignore it
  1023. 02E4             001010 
  1024. 02E4 30FB        001011         movlw   0xFA+1              ; PageDown
  1025. 02E5 021A        001012         subwf   tableoffset,W
  1026. 02E6 1903        001013         btfsc   STATUS,Z            ; skip if not equal
  1027. 02E7 2A91        001014         goto    ATstyle             ; ignore it
  1028. 02E8             001015 
  1029. 02E8 30FD        001016         movlw   0xFC+1              ; PrtScrn
  1030. 02E9 021A        001017         subwf   tableoffset,W
  1031. 02EA 1903        001018         btfsc   STATUS,Z            ; skip if not equal
  1032. 02EB 2A91        001019         goto    ATstyle             ; ignore it
  1033. 02EC             001020 
  1034. 02EC 30FE        001021         movlw   0xFD+1              ; PageUp
  1035. 02ED 021A        001022         subwf   tableoffset,W
  1036. 02EE 1903        001023         btfsc   STATUS,Z            ; skip if not equal
  1037. 02EF 2A91        001024         goto    ATstyle             ; ignore it
  1038. 02F0             001025 
  1039. 02F0 30FF        001026         movlw   0xFE+1              ; Break
  1040. 02F1 021A        001027         subwf   tableoffset,W
  1041. 02F2 1903        001028         btfsc   STATUS,Z            ; skip if not equal
  1042. 02F3 2A91        001029         goto    ATstyle             ; ignore it
  1043. 02F4             001030 
  1044. 02F4 081A        001031         movf    tableoffset,W
  1045. 02F5 2001        001032         call    ATtb1
  1046. 02F6 39FE        001033         andlw   0xFE                ; clear bit 0
  1047. 02F7 2148        001034         call    amigatransmit
  1048. 02F8 2A91        001035         goto    ATstyle
  1049. 02F9             001036         
  1050. 02F9             001037 
  1051. 02F9             001038 
  1052. 02F9             001039 
  1053. 02F9             001040 
  1054. 02F9             001041 
  1055. 02F9             001042 
  1056. 02F9             001043 
  1057. 02F9             001044 
  1058. 02F9             001045 
  1059. 02F9             001046 
  1060. 02F9             001047 
  1061. 02F9             001048 
  1062. 02F9             001049 
  1063. 02F9             001050 ; *** Change configuration ***
  1064. 02F9             001051 config
  1065. 02F9 019E        001052         clrf    eeaddress
  1066. 02FA 303B        001053         movlw   0x3B                ; CAPSLOCK ON
  1067. 02FB 21A0        001054         call    actualtransmit
  1068. 02FC             001055         
  1069. 02FC 235C        001056         call    say_select          ; Select Type of
  1070. 02FD 237E        001057         call    say_key             ; key
  1071. 02FE 3095        001058         movlw   0x95                ; b
  1072. 02FF 23B5        001059         call    sendmessage
  1073. 0300 30CF        001060         movlw   0xCF                ; o
  1074. 0301 23B5        001061         call    sendmessage
  1075. 0302 30BF        001062         movlw   0xBF                ; a
  1076. 0303 23B5        001063         call    sendmessage
  1077. 0304 30D9        001064         movlw   0xD9                ; r
  1078. 0305 23B5        001065         call    sendmessage
  1079. 0306 30BB        001066         movlw   0xBB                ; d
  1080. 0307 23B5        001067         call    sendmessage
  1081. 0308 2385        001068         call    say_option1         ; 1=
  1082. 0309 2398        001069         call    say_uk10            ; uk 10
  1083. 030A 30FB        001070         movlw   0xFB                ; 2
  1084. 030B 23B5        001071         call    sendmessage
  1085. 030C 307F        001072         movlw   0x7F                ; space
  1086. 030D 23B5        001073         call    sendmessage
  1087. 030E 237E        001074         call    say_key             ; key
  1088. 030F 238F        001075         call    say_option2         ; 2=
  1089. 0310 2398        001076         call    say_uk10            ; uk 10
  1090. 0311 30F5        001077         movlw   0xF5                ; 5
  1091. 0312 23B5        001078         call    sendmessage
  1092. 0313 307F        001079         movlw   0x7F                ; space
  1093. 0314 23B5        001080         call    sendmessage
  1094. 0315 237E        001081         call    say_key             ; key
  1095. 0316 307F        001082         movlw   0x7F                ; space
  1096. 0317 23B5        001083         call    sendmessage
  1097. 0318 30DD        001084         movlw   0xDD                ; w
  1098. 0319 23B5        001085         call    sendmessage
  1099. 031A 30D1        001086         movlw   0xD1                ; i
  1100. 031B 23B5        001087         call    sendmessage
  1101. 031C 3093        001088         movlw   0x93                ; n
  1102. 031D 23B5        001089         call    sendmessage
  1103. 031E 30ED        001090         movlw   0xED                ; 9
  1104. 031F 23B5        001091         call    sendmessage
  1105. 0320 30F5        001092         movlw   0xF5                ; 5
  1106. 0321 23B5        001093         call    sendmessage
  1107. 0322 3077        001094         movlw   0x77                ; return 
  1108. 0323 23B5        001095         call    sendmessage
  1109. 0324 23BC        001096         call    getselection
  1110. 0325 009F        001097         movwf   eedata
  1111. 0326 081F        001098         movf    eedata,W
  1112. 0327 1903        001099         btfsc   STATUS,Z            ; skip if not zero
  1113. 0328 2AF9        001100         goto    config              ; bad choice, try again
  1114. 0329 23C8        001101         call    writedata        
  1115. 032A 23A3        001102         call    say_ok
  1116. 032B 01A0        001103         clrf    win95
  1117. 032C 3000        001104         movlw   Keytype
  1118. 032D 23D8        001105         call    readdata
  1119. 032E 3C02        001106         sublw   0x2                 
  1120. 032F 1903        001107         btfsc   STATUS,Z            ; skip if not equal
  1121. 0330 09A0        001108         comf    win95               ; win95=true or false
  1122. 0331             001109 
  1123. 0331 0A9E        001110         incf    eeaddress
  1124. 0332             001111 askreset
  1125. 0332 235C        001112         call    say_select          ; Select Type of
  1126. 0333 23AA        001113         call    say_reset           ; reset
  1127. 0334 2385        001114         call    say_option1         ; 1=
  1128. 0335 30B9        001115         movlw   0xB9                ; f
  1129. 0336 23B5        001116         call    sendmessage
  1130. 0337 30BF        001117         movlw   0xBF                ; a
  1131. 0338 23B5        001118         call    sendmessage
  1132. 0339 30BD        001119         movlw   0xBD                ; s
  1133. 033A 23B5        001120         call    sendmessage
  1134. 033B 30D7        001121         movlw   0xD7                ; t
  1135. 033C 23B5        001122         call    sendmessage
  1136. 033D 307F        001123         movlw   0x7F                ; space
  1137. 033E 23B5        001124         call    sendmessage
  1138. 033F 23AA        001125         call    say_reset           ; reset
  1139. 0340 238F        001126         call    say_option2         ; 2=
  1140. 0341 30BD        001127         movlw   0xBD                ; s
  1141. 0342 23B5        001128         call    sendmessage
  1142. 0343 30AF        001129         movlw   0xAF                ; l
  1143. 0344 23B5        001130         call    sendmessage
  1144. 0345 30CF        001131         movlw   0xCF                ; o
  1145. 0346 23B5        001132         call    sendmessage
  1146. 0347 30DD        001133         movlw   0xDD                ; w
  1147. 0348 23B5        001134         call    sendmessage
  1148. 0349 307F        001135         movlw   0x7F                ; space
  1149. 034A 23B5        001136         call    sendmessage
  1150. 034B 23AA        001137         call    say_reset           ; reset
  1151. 034C 3077        001138         movlw   0x77                ; return 
  1152. 034D 23B5        001139         call    sendmessage
  1153. 034E             001140 
  1154. 034E 23BC        001141         call    getselection
  1155. 034F 009F        001142         movwf   eedata
  1156. 0350 081F        001143         movf    eedata,W
  1157. 0351 1903        001144         btfsc   STATUS,Z            ; skip if not zero
  1158. 0352 2B32        001145         goto    askreset            ; bad choice, try again
  1159. 0353 23C8        001146         call    writedata        
  1160. 0354 23A3        001147         call    say_ok
  1161. 0355             001148 
  1162. 0355 019B        001149         clrf    AltConfig
  1163. 0356 307E        001150         movlw   0x7E                ; space up
  1164. 0357 088D        001151         movf    Capdown,F           ; Capslock down?
  1165. 0358 1903        001152         btfsc   STATUS,Z            ; skip if non-zero i.e caps pressed
  1166. 0359 303A        001153         movlw   0x3A                ; Caps up
  1167. 035A 0096        001154         movwf   Amigachar
  1168. 035B 0008        001155         return
  1169. 035C             001156         
  1170. 035C             001157 say_select
  1171. 035C 3077        001158         movlw   0x77                ; return x2
  1172. 035D 23B5        001159         call    sendmessage
  1173. 035E 23B5        001160         call    sendmessage
  1174. 035F 30BD        001161         movlw   0xBD                ; s
  1175. 0360 23B5        001162         call    sendmessage
  1176. 0361 30DB        001163         movlw   0xDB                ; e
  1177. 0362 23B5        001164         call    sendmessage
  1178. 0363 30AF        001165         movlw   0xAF                ; l
  1179. 0364 23B5        001166         call    sendmessage
  1180. 0365 30DB        001167         movlw   0xDB                ; e
  1181. 0366 23B5        001168         call    sendmessage
  1182. 0367 3099        001169         movlw   0x99                ; c
  1183. 0368 23B5        001170         call    sendmessage
  1184. 0369 30D7        001171         movlw   0xD7                ; t
  1185. 036A 23B5        001172         call    sendmessage
  1186. 036B 307F        001173         movlw   0x7F                ; space
  1187. 036C 23B5        001174         call    sendmessage
  1188. 036D 30D7        001175         movlw   0xD7                ; t
  1189. 036E 23B5        001176         call    sendmessage
  1190. 036F 30D5        001177         movlw   0xD5                ; y
  1191. 0370 23B5        001178         call    sendmessage
  1192. 0371 30CD        001179         movlw   0xCD                ; p
  1193. 0372 23B5        001180         call    sendmessage
  1194. 0373 30DB        001181         movlw   0xDB                ; e
  1195. 0374 23B5        001182         call    sendmessage
  1196. 0375 307F        001183         movlw   0x7F                ; space
  1197. 0376 23B5        001184         call    sendmessage
  1198. 0377 30CF        001185         movlw   0xCF                ; o
  1199. 0378 23B5        001186         call    sendmessage
  1200. 0379 30B9        001187         movlw   0xB9                ; f
  1201. 037A 23B5        001188         call    sendmessage
  1202. 037B 307F        001189         movlw   0x7F                ; space
  1203. 037C 23B5        001190         call    sendmessage
  1204. 037D 0008        001191         return
  1205. 037E             001192 
  1206. 037E             001193 say_key
  1207. 037E 30B1        001194         movlw   0xB1                ; k
  1208. 037F 23B5        001195         call    sendmessage
  1209. 0380 30DB        001196         movlw   0xDB                ; e
  1210. 0381 23B5        001197         call    sendmessage
  1211. 0382 30D5        001198         movlw   0xD5                ; y
  1212. 0383 23B5        001199         call    sendmessage
  1213. 0384 0008        001200         return
  1214. 0385             001201 
  1215. 0385             001202 say_option1
  1216. 0385 3077        001203        movlw   0x77                ; return x2
  1217. 0386 23B5        001204         call    sendmessage
  1218. 0387 23B5        001205         call    sendmessage
  1219. 0388 30FD        001206         movlw   0xFD                ; 1
  1220. 0389 23B5        001207         call    sendmessage
  1221. 038A 30E7        001208         movlw   0xE7                ; =
  1222. 038B 23B5        001209         call    sendmessage
  1223. 038C 307F        001210         movlw   0x7F                ; space
  1224. 038D 23B5        001211         call    sendmessage
  1225. 038E 0008        001212         return
  1226. 038F             001213 
  1227. 038F             001214 say_option2
  1228. 038F 3077        001215         movlw   0x77                ; return 
  1229. 0390 23B5        001216         call    sendmessage
  1230. 0391 30FB        001217         movlw   0xFB                ; 2
  1231. 0392 23B5        001218         call    sendmessage
  1232. 0393 30E7        001219         movlw   0xE7                ; =
  1233. 0394 23B5        001220         call    sendmessage
  1234. 0395 307F        001221         movlw   0x7F                ; space
  1235. 0396 23B5        001222         call    sendmessage
  1236. 0397 0008        001223         return
  1237. 0398             001224 
  1238. 0398             001225 say_uk10
  1239. 0398 30D3        001226         movlw   0xD3                ; u
  1240. 0399 23B5        001227         call    sendmessage
  1241. 039A 30B1        001228         movlw   0xB1                ; k
  1242. 039B 23B5        001229         call    sendmessage
  1243. 039C 307F        001230         movlw   0x7F                ; space
  1244. 039D 23B5        001231         call    sendmessage
  1245. 039E 30FD        001232         movlw   0xFD                ; 1
  1246. 039F 23B5        001233         call    sendmessage
  1247. 03A0 30EB        001234         movlw   0xEB                ; 0
  1248. 03A1 23B5        001235         call    sendmessage
  1249. 03A2 0008        001236         return
  1250. 03A3             001237 
  1251. 03A3             001238 say_ok
  1252. 03A3 30CF        001239         movlw   0xCF                ; o
  1253. 03A4 23B5        001240         call    sendmessage
  1254. 03A5 30B1        001241         movlw   0xB1                ; k
  1255. 03A6 23B5        001242         call    sendmessage
  1256. 03A7 3077        001243         movlw   0x77                ; return
  1257. 03A8 23B5        001244         call    sendmessage
  1258. 03A9 0008        001245         return
  1259. 03AA             001246 
  1260. 03AA             001247 say_reset
  1261. 03AA 30D9        001248         movlw   0xD9                ; r
  1262. 03AB 23B5        001249         call    sendmessage
  1263. 03AC 30DB        001250         movlw   0xDB                ; e
  1264. 03AD 23B5        001251         call    sendmessage
  1265. 03AE 30BD        001252         movlw   0xBD                ; s
  1266. 03AF 23B5        001253         call    sendmessage
  1267. 03B0 30DB        001254         movlw   0xDB                ; e
  1268. 03B1 23B5        001255         call    sendmessage
  1269. 03B2 30D7        001256         movlw   0xD7                ; t
  1270. 03B3 23B5        001257         call    sendmessage
  1271. 03B4 0008        001258         return
  1272. 03B5             001259 
  1273. 03B5             001260 
  1274. 03B5             001261 sendmessage
  1275. 03B5 009C        001262         movwf   Savechar
  1276. 03B6 21A0        001263         call    actualtransmit
  1277. 03B7 081C        001264         movf    Savechar,W
  1278. 03B8 39FE        001265         andlw   0xFE
  1279. 03B9 21A0        001266         call    actualtransmit
  1280. 03BA 081C        001267         movf    Savechar,W
  1281. 03BB 0008        001268         return        
  1282. 03BC             001269 
  1283. 03BC             001270 getselection
  1284. 03BC 2217        001271         call    ATgetkey
  1285. 03BD 2217        001272         call    ATgetkey
  1286. 03BE 2217        001273         call    ATgetkey
  1287. 03BF 3016        001274         movlw   0x16                ; was key 1 pressed and released
  1288. 03C0 0219        001275         subwf   ATchar,W
  1289. 03C1 1903        001276         btfsc   STATUS,Z            ; skip if not equal
  1290. 03C2 3401        001277         retlw   0x1     
  1291. 03C3 301E        001278         movlw   0x1E                ; was key 2 pressed and released
  1292. 03C4 0219        001279         subwf   ATchar,W
  1293. 03C5 1903        001280         btfsc   STATUS,Z            ; skip if not equal
  1294. 03C6 3402        001281         retlw   0x2        
  1295. 03C7 3400        001282         retlw   0x0
  1296. 03C8             001283 
  1297. 03C8             001284 writedata
  1298. 03C8 081E        001285         movf    eeaddress,W
  1299. 03C9 0089        001286         movwf   EEADR
  1300. 03CA 081F        001287         movf    eedata,W
  1301. 03CB 0088        001288         movwf   EEDATA
  1302. 03CC 1683        001289         PAGE1
  1303. 03CD 1508        001290         bsf     EECON1,WREN         ; EEPROM write enable
  1304. 03CE 3055        001291         movlw   0x55
  1305. 03CF 0089        001292         movwf   EECON2
  1306. 03D0 30AA        001293         movlw   0xAA
  1307. 03D1 0089        001294         movwf   EECON2
  1308. 03D2 1488        001295         bsf     EECON1,WR
  1309. 03D3             001296 wait_write
  1310. 03D3 1E08        001297         btfss   EECON1,EEIF         ; wait for write to finish
  1311. 03D4 2BD3        001298         goto    wait_write
  1312. 03D5 0188        001299         clrf    EECON1              ; EEPROM write disable & int accept
  1313. 03D6 1283        001300         PAGE0
  1314. 03D7 0008        001301         return
  1315. 03D8             001302 
  1316. 03D8             001303 
  1317. 03D8             001304 readdata
  1318. 03D8 0089        001305         movwf   EEADR
  1319. 03D9 1683        001306         PAGE1
  1320. 03DA 1408        001307         bsf     EECON1,RD           ; EEPROM read
  1321. 03DB 1283        001308         PAGE0
  1322. 03DC 0808        001309         movf    EEDATA,W
  1323. 03DD 0008        001310         return
  1324. 03DE             001311 
  1325. 03DE             001312 
  1326. 03DE             001313 
  1327. 03DE             001314 
  1328. 03DE             001315 
  1329. 03DE             001316 
  1330. 03DE             001317 
  1331. 03DE             001318         end
  1332.  
  1333.  
  1334. Used Symbols
  1335. -----------------------------------------
  1336. W                                00000000
  1337. F                                00000001
  1338. INDF                             00000000
  1339. TMR0                             00000001
  1340. PCL                              00000002
  1341. STATUS                           00000003
  1342. FSR                              00000004
  1343. PORTA                            00000005
  1344. PORTB                            00000006
  1345. PCLATH                           0000000A
  1346. INTCON                           0000000B
  1347. OPTION_REG                       00000081
  1348. TRISA                            00000085
  1349. TRISB                            00000086
  1350. GIE                              00000007
  1351. T0IE                             00000005
  1352. INTE                             00000004
  1353. RBIE                             00000003
  1354. T0IF                             00000002
  1355. INTF                             00000001
  1356. RBIF                             00000000
  1357. NOT_RBPU                         00000007
  1358. INTEDG                           00000006
  1359. T0CS                             00000005
  1360. T0SE                             00000004
  1361. PSA                              00000003
  1362. PS2                              00000002
  1363. PS1                              00000001
  1364. PS0                              00000000
  1365. IRP                              00000007
  1366. RP1                              00000006
  1367. RP0                              00000005
  1368. NOT_TO                           00000004
  1369. NOT_PD                           00000003
  1370. Z                                00000002
  1371. DC                               00000001
  1372. C                                00000000
  1373. EEDATA                           00000008
  1374. EEADR                            00000009
  1375. EECON1                           00000088
  1376. EECON2                           00000089
  1377. RD                               00000000
  1378. WR                               00000001
  1379. WREN                             00000002
  1380. WRERR                            00000003
  1381. EEIF                             00000004
  1382. ScrollLock                       00000000
  1383. NumLock                          00000001
  1384. CapsLock                         00000002
  1385. Kclk                             00000001
  1386. Kdat                             00000000
  1387. Aclk                             00000004
  1388. Adat                             00000003
  1389. Arst                             00000002
  1390. Ctrlbit                          00000000
  1391. RAmigabit                        00000001
  1392. LAmigabit                        00000002
  1393. Keytype                          00000000
  1394. Resetype                         00000001
  1395. ScratchPadRam                    0000000C
  1396. Capbit                           0000000C
  1397. Capdown                          0000000D
  1398. CtrlDown                         0000000E
  1399. RESET                            0000000F
  1400. Lights                           00000010
  1401. Count3                           00000011
  1402. ATparity                         00000012
  1403. Make                             00000013
  1404. Charbad                          00000014
  1405. Oldchar                          00000015
  1406. Amigachar                        00000016
  1407. Count1                           00000017
  1408. Count2                           00000018
  1409. ATchar                           00000019
  1410. tableoffset                      0000001A
  1411. AltConfig                        0000001B
  1412. Savechar                         0000001C
  1413. returnvalue                      0000001D
  1414. eeaddress                        0000001E
  1415. eedata                           0000001F
  1416. win95                            00000020
  1417. Savechar2                        00000021
  1418. ATtb1                            00000001
  1419. ATtb2                            00000081
  1420. lctrl                            00000100
  1421. rctrl                            00000103
  1422. swapscreen                       00000106
  1423. prtscreen                        0000010D
  1424. endkey                           00000114
  1425. home                             0000011B
  1426. pagedown                         00000122
  1427. pageup                           00000129
  1428. insert                           00000130
  1429. break                            00000137
  1430. longdelay                        0000013E
  1431. dly                              0000013F
  1432. fixeddelay                       00000143
  1433. smalldelay                       00000144
  1434. delay                            00000145
  1435. amigatransmit                    00000148
  1436. transok2                         00000166
  1437. transok4                         0000017D
  1438. transok3                         00000184
  1439. nocontrol                        00000195
  1440. actualtransmit                   000001A0
  1441. actual2                          000001A3
  1442. f                                000001A6
  1443. ack                              000001BD
  1444. ready                            000001C5
  1445. syncup                           000001CC
  1446. SendtoAT                         000001D7
  1447. resend                           000001D8
  1448. Send4                            000001E8
  1449. Send5                            000001F1
  1450. Send6                            000001F5
  1451. Send7                            000001FB
  1452. Send77                           000001FD
  1453. Send78                           00000200
  1454. Send79                           00000205
  1455. Send7a                           00000207
  1456. ATgetkey                         00000217
  1457. skip1st                          0000021C
  1458. skippy                           0000021E
  1459. ATwait0                          00000222
  1460. ATwait1                          00000229
  1461. parity0                          0000022D
  1462. parity1                          0000022F
  1463. stop0                            00000231
  1464. stop1                            00000233
  1465. flash                            0000023C
  1466. reset                            0000024A
  1467. strobe                           00000253
  1468. kill                             0000025B
  1469. start                            00000264
  1470. SpinUp                           00000264
  1471. waitHD                           0000026A
  1472. start2                           0000026E
  1473. waitAT                           00000284
  1474. ATstyle                          00000291
  1475. ATnE1                            000002A1
  1476. ATnEF12                          000002B2
  1477. ATnE0F0                          000002B7
  1478. ATnE012                          000002BB
  1479. ATnE0                            000002C0
  1480. ATdown                           000002C6
  1481. ATup                             000002CD
  1482. config                           000002F9
  1483. askreset                         00000332
  1484. say_select                       0000035C
  1485. say_key                          0000037E
  1486. say_option1                      00000385
  1487. say_option2                      0000038F
  1488. say_uk10                         00000398
  1489. say_ok                           000003A3
  1490. say_reset                        000003AA
  1491. sendmessage                      000003B5
  1492. getselection                     000003BC
  1493. writedata                        000003C8
  1494. wait_write                       000003D3
  1495. readdata                         000003D8
  1496.  
  1497.  
  1498. Used Defines
  1499. -----------------------------------------
  1500. PAGE0                            bcf STATUS,RP0  
  1501. PAGE1                            bsf STATUS,RP0  
  1502.  
  1503.  
  1504. PROGRAM MEMORY USAGE TABLE:    '-' = not used  'X' = used
  1505.  
  1506. 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1507. 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1508. 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1509. 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1510. 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1511. 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1512. 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1513. 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1514. 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1515. 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1516. 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1517. 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1518. 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1519. 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1520. 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  1521. 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- ----------------
  1522.  
  1523. Program Memory Words Used:  0990
  1524. Program Memory Words Free:  0034
  1525.  
  1526. Errors: 0
  1527.